﻿using System.ComponentModel;

namespace mvvm4
{
    // Model-Klassen mit INotifyPropertyChanged auszustatten ist legitim, kann bei MVVM-Puristen aber zu Glaubenskriegen führen.
    // Es ändert auch nichts daran, dass sie ein Model und kein eigenes ViewModel sind, das Interface gibt es immerhin schon länger als WPF...
    public class DataModel : INotifyPropertyChanged
    {
        private string address;
        private string name;

        public string Name
        {
            get { return name; }
            set
            {
                if (value != name)
                {
                    name = value;
                    InvokePropertyChanged(new PropertyChangedEventArgs("Name"));
                }
            }
        }

        public string Address
        {
            get { return address; }
            set
            {
                if (value != address)
                {
                    address = value;
                    InvokePropertyChanged(new PropertyChangedEventArgs("Address"));
                }
            }
        }

        #region INotifyPropertyChanged Members

        public event PropertyChangedEventHandler PropertyChanged;

        #endregion

        public void InvokePropertyChanged(PropertyChangedEventArgs e)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
            {
                handler(this, e);
            }
        }
    }
}